基础知识: typedef v.s #define
Get the knowledge flowing and circulating! :)
目录
typedef
与#define
使用简述在数据结构(C/C++版本)的代码实现过程,经常会遇到一堆看上去像是单词,但是又不是单词的东西。
比如:ElemType, Exit, Error, ... 等等,这些还会根据不同的编程习惯而有所差别,追本溯源,其实就是一些别名和宏定义,所以这里我们提前说说!
为后面的学习理清思绪,打好基础!
xxxxxxxxxx
281/*
2 typedef v.s. #define
3*/
4
5
6
7
8
9
10typedef int ElemType;
11
12int main()
13{
14 int a = 2;
15 ElemType b = 2;
16
17 if (a == b)
18 printf("true\n"); // 通过这个输出结果,可以知道:typedef就是给类型起个别名!
19 else
20 printf("false\n");
21
22
23 int sum = a + b + price; // 这里的price会在编译的时候,直接把price换为整数2.
24
25 printf("a + b + price = %d\n", sum);
26
27 return 0;
28}
通过上面的代码可以看到,typedef实际上就是给原有的类型,换个名字,但是用法还是一样。
#define实际上在编译过程,会完全替换掉定义的内容!
注意事项:
typedef使用规则:typedef
源类型
新名字
;
#define使用规则:相较于typedef,不需要结尾的分号。#define
var
value
说抽象点:就是为了方便代码的阅读和修改,以及在编译过程有节省空间的效果;
说具体点:就是一处定义,多处使用。加入demo中的price是某个货物的价格,在通货膨胀和通货紧缩的情况下,price可能会改变,此时,如果程序很长,并且多处用到了价格这个数值,那么只需要一开始在程序头部通过#define定义价格,然后根据需要直接改动#define定义的price的值,就可以把通篇所有用到price的地方都改了!
后期可能还会遇到这种形式的define宏定义:#ifdef
如果遇到了实际的程序,我再放出它的Demo,大家也可以根据自己需求提前学习!